#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main()
{
   pid_t id=fork();
   if(id==0)
   {
      int cnt=5;
      while(cnt--)
      {
         printf("我是子进程--- pid:%d ppid:%d\n",getpid(),getppid());
         sleep(1);
      }
     //int a=11/0;
      exit(11);
      
     //int cnt=5;
     // while(1)
     // {
     //    printf("我是子进程--- pid:%d ppid:%d\n",getpid(),getppid());
     //    sleep(1);
     // }
   }
   else
   {
      int status=0;
      while(1)
      {
          pid_t ppp= waitpid(id,&status,WNOHANG);

          if(ppp>0)
          {
             printf("我是你爹!  exit code:%d\n",WEXITSTATUS(status));
             break;
          }
          else if(ppp<0)
          {
             printf("我是你爹! sign code:%d\n",status&0x7F);   
             break;
          }
          else
          {
             printf("傻儿子快点，你爹我干别的去了\n");
             sleep(1);
          }
     //printf("我是你爹！  exit code:%d    sign code:%d \n",(status>>8)&0xFF,status&0x7F);  
    }                                                                                       
      }  

   return 0;
}
